package classes;

import pt.iscte.osgi.contracts.annotations.MethodRequired;
import pt.iscte.osgi.contracts.annotations.Negative;
import pt.iscte.osgi.contracts.annotations.Positive;
import pt.iscte.osgi.contracts.annotations.Require;
import pt.iscte.osgi.contracts.annotations.RequiredConstructor;
import pt.iscte.osgi.contracts.annotations.Requires;

@RequiredConstructor({String.class, String.class, Integer.class})
public interface ConstructorInterface {

	public void setValue1(int val);
	
	public void setValue2(double val);
	
	public void setValue3(float val);
	
	public void setValue4(int val);
	
	@Positive
	public float getValue3();
	
	@Negative
	public int getValue4();
	
	public void setValue5(@Positive double val);
	
	public void setValue6(@Negative float val);
	
	@Requires(@MethodRequired)
	public void run();
	
	@MethodRequired
	public boolean isOn();
	
	@Require("isOff")
	public void stop();
	
	public boolean isOff();
	
}
